1
|
|
|
import PageRegistry from '@enbock/application-router/Registry'; |
2
|
|
|
import {PageData} from '@enbock/application-router/Router'; |
3
|
|
|
import {Observer} from '@enbock/state-value-observer/ValueObserver'; |
4
|
|
|
import Translator from '../../../Language/Translator'; |
5
|
|
|
import Model from './Model'; |
6
|
|
|
|
7
|
|
|
export default class Presenter { |
8
|
|
|
menuOpenState: Observer<boolean>; |
9
|
|
|
routerObserver: Observer<PageData | null>; |
10
|
|
|
pageRegistry: PageRegistry; |
11
|
|
|
translator: Observer<Translator>; |
12
|
|
|
|
13
|
|
|
constructor( |
14
|
|
|
menuOpenState: Observer<boolean>, |
15
|
|
|
translator: Observer<Translator>, |
16
|
|
|
routerObserver: Observer<PageData | null>, |
17
|
|
|
pageRegistry: PageRegistry |
18
|
|
|
) { |
19
|
3 |
|
this.translator = translator; |
20
|
3 |
|
this.menuOpenState = menuOpenState; |
21
|
3 |
|
this.routerObserver = routerObserver; |
22
|
3 |
|
this.pageRegistry = pageRegistry; |
23
|
|
|
} |
24
|
|
|
|
25
|
|
|
present(): Model { |
26
|
2 |
|
const model: Model = new Model(); |
27
|
2 |
|
model.isOpen = this.menuOpenState.value; |
28
|
|
|
|
29
|
2 |
|
const translator: Translator = this.translator.value; |
30
|
2 |
|
model.translation = { |
31
|
|
|
home: translator.translate('Application.SideMenu.Home'), |
32
|
|
|
settings: translator.translate('Application.SideMenu.Settings') |
33
|
|
|
}; |
34
|
|
|
|
35
|
2 |
|
const pages: PageData[] = this.pageRegistry.getPages(); |
36
|
2 |
|
const activePage: string = this.routerObserver.value?.name || ''; |
37
|
|
|
|
38
|
2 |
|
model.pageNames = []; |
39
|
2 |
|
pages.forEach( |
40
|
|
|
(page: PageData) => { |
41
|
4 |
|
model.pageNames.push(page.name); |
42
|
4 |
|
model.isActive[page.name] = (activePage == page.name); |
43
|
4 |
|
model.url[page.name] = page.currentUrl; |
44
|
|
|
} |
45
|
|
|
); |
46
|
|
|
|
47
|
2 |
|
return model; |
48
|
|
|
} |
49
|
|
|
} |
50
|
|
|
|